<template>
  <header class="header">
    <h1>todos</h1>
    <input v-model="isAll" id="toggle-all" class="toggle-all" type="checkbox" >
    <label for="toggle-all"></label>
    <input
      class="new-todo"
      placeholder="输入任务名称-回车确认"
      autofocus
      v-model.trim="taskName"
      @keydown.enter="enterDown"
    />
  </header>
</template>

<script>
export default {

  props: ['list'],

  data() {
    return {
      taskName: ''
    }
  },

  methods: {
    enterDown() {
      if (this.taskName.length === 0) return alert('不能为空')
      // 通过子传父技术将 taskName 传递给App.vue
      // 使用 this.$emit('事件名', '数据')
      this.$emit('addTask', this.taskName)
      // 清空文本框
      this.taskName = ''
    }
  },

  computed: {
    isAll: {
      set(val) {
        // console.log(val)
        // 单向数据流是指: 不能直接对 props 中的数据进行赋值操作
        // list 是引用数据类型, 所以修改内部的属性不会影响单向数据流的保护
        // this.list = [] // 不可以这样!
        // this.list[0].isDone = false // 可以的
        this.list.forEach(item => item.isDone = val)
      },
      get() {
        if (this.list.length === 0) return false
        return this.list.every(item => item.isDone)
      }
    }
  }
 
}
</script>